package sixth.包装类.装箱与拆箱;

public class 装箱及拆箱操作 {
    public static void main(String[] args) {
        int x = 30;
        // Integer i =new Integer(x);
        /**
         * 为什么不用 new Integer()？
         * 在Java 9及以后的版本中，并不是不能使用new Integer()来创建对象，而是推荐使用Integer.valueOf()方法来代替直接使用new Integer()构造函数创建对象。
         * 这样做的原因主要是为了提高代码的效率和性能。当使用new Integer()时，
         * 每次都会创建一个新的Integer对象，即使这个对象的值已经存在。而Integer.valueOf()方法则使用了一个内部缓存机制，
         * 对于-128到127之间的数值，它会返回缓存中的实例，而不是创建一个新的对象。这样可以减少不必要的对象创建，从而减少内存的消耗和提高性能。
         */
        Integer i = Integer.valueOf(x);// 装箱操作:将基本数据类型转换为包装类
        int temp = i.intValue();// 拆箱操作：将一个包装类变为基本数据类型

        //浮点数的装箱以及拆箱
        float f= 333.3F;//声明一个基本数据类型
        Float f1 = Float.valueOf(f);//装箱：将基本数据类型变为包装类
        float f2 = f1.floatValue(); //拆箱：将一个包装类变为基本数据类型

        //上面的程序都要求手动拆箱和手动装箱 这是JDK1.5之前的做法 在1.5之后提供了自动的装箱和拆箱操作
        Integer i1 = 30;    //自动装箱成Integer
        Float f3 = 30.3F;   //自动装箱成Float
        int x1 = i1;        //自动拆箱为int
        float f4 = f3;      //自动拆箱为float

    }
}
